package com.example.common.util;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Classname DateUtil
 * @Description Date时间工具类
 * @Date 2019/6/25 10:57
 */
public class DateUtil {
    
    /**
     * <h2>日期静态内部类</h2>
     */
    public static class Format{

        // ==格式到年==
        /**
         * 日期格式:年   例如：2018，2019
         */
        public static final String YEAR = "yyyy";


        // ==格式到年月== UN:特殊
        /**
         * 日期格式:年 月  例如：2018-09，2019-09
         */
        public static final String YEAR_MONTH = "yyyy-MM";

        /**
         * 日期格式:年 月  例如：201809，201909
         */
        public static final String YEAR_MONTH_UN = "yyyyMM";


        // ==格式到年月日== UN:特殊 POINT:点 FORMAT:格式化
        /**
         * 日期格式:年 月 日  例如：2018-09-23，2019-09-23
         */
        public static final String YEAR_MONTH_DAY = "yyyy-MM-dd";

        /**
         * 日期格式:年 月 日  例如：20180923，20190923
         */
        public static final String YEAR_MONTH_DAY_UN = "yyyyMMdd";

        /**
         * 日期格式:年 月 日  例如：2018.09.23，2019.09.23
         */
        public static final String YEAR_MONTH_DAY_POINT = "yyyy.MM.dd";

        /**
         * 日期格式:年 月 日  例如：2018年09月23日，2019年09月23日
         */
        public static final String YEAR_MONTH_DAY_FORMAT = "yyyy年MM月dd日";


        // ==格式到年月日 时分== UN:特殊
        /**
         * 日期格式:年 月 日 时 分 秒  例如：2018-09-23 15:40，2019-09-23 15:40
         */
        public static final String YEAR_MONTH_DAY_TIME_MINUTE = "yyyy-MM-dd HH:mm";

        /**
         * 日期格式:年 月 日 时 分 秒  例如：20180923 15:40，20190923 15:40
         */
        public static final String YEAR_MONTH_DAY_TIME_MINUTE_UN = "yyyyMMdd HH:mm";


        // ==格式到年月日 时分秒== UN:特殊
        /**
         * 日期格式:年 月 日 时 分 秒   例如：2018-09-23 15:40:45，2019-09-23 15:40:45
         */
        public static final String YEAR_MONTH_DAY_TIME_MINUTE_SECONDS = "yyyy-MM-dd HH:mm:ss";

        /**
         * 日期格式:年 月 日 时 分 秒   例如：20180923154045，20190923154045
         */
        public static final String YEAR_MONTH_DAY_TIME_MINUTE_SECONDS_UN = "yyyyMMddHHmmss";


        // ==特殊格式==
        /**
         * 日期格式:时 分 秒
         */
        public static final String TIME_MINUTE_SECONDS = "HH:mm:ss";

        /**
         * 日期格式:分 秒
         */
        public static final String MINUTE_SECONDS = "mm:ss";
    }


    /**
     * 获取String类型日期格式 格式：由传输规则而定
     * 规则一：yyyy-MM-dd
     * 规则二：yyMMddHHmmss
     * 规则三：yyyy-MM-dd HH:mm:ss
     * 规则四：yyyyMMdd
     * 规则五：yyyyMMddHHmmssSS
     * @return
     */
    public static String stringDateRule(String rule){
        SimpleDateFormat sdf = new SimpleDateFormat(rule);
        return sdf.format(new Date());
    }

}
